package servicios

import daos.Operation
import daos.SessionManager
import daos.UsuarioDAO
import dominio.Usuario

class UsuarioManager {
	def ingresarUsuario(String userName, String password) {
		SessionManager.runInSession(new IngresarUsuario(userName, password))
	}
	
	def registrarUsuario(Usuario u) {
		SessionManager.runInSession(new RegistrarUsuario(u))
	}

	def cambiarPassword(String userName, String password, String nuevaPassword) {
		SessionManager.runInSession(new CambiarPassword(userName, password, nuevaPassword))
	}
}

class IngresarUsuario implements Operation<Usuario>{
	var String nombreUsuario
	var String pass
	
	new(String userName, String password) {
		nombreUsuario= userName
		pass= password
	}

	override Usuario execute() {
		var u = new UsuarioDAO().get(nombreUsuario)
		u
	}
}

class RegistrarUsuario implements Operation<Usuario> {
	var Usuario usuario

	new(Usuario u) {
		usuario= u
	}

	override Usuario execute() {
		new UsuarioDAO().save(usuario)
	    usuario
	}
}

class CambiarPassword implements Operation<Usuario> {

	var String nombreUsuario
	var String pass
	var String nuevaPass

	new(String userName, String password, String nuevaPassword) {
		nombreUsuario= userName
		pass= password
		nuevaPass= nuevaPassword
	}

	override Usuario execute() {
		var u = new UsuarioDAO().get(nombreUsuario)
		u.setPassword(nuevaPass)
		u
	}
}